Modern communication networks comprise network nodes, such as routers, switches, bridges, and other devices, that transport data through the networks. Over the years, the networks have become increasingly complex, leading to inter-woven webs of network nodes. As a result, node vendors have struggled to customize, optimize, and improve the performance of the nodes. Software-defined networking (SDN) is an emerging network technology that may improve customization, optimization, and improvement of networks. SDN may simplify networks by decoupling data-forwarding functionality (sometimes referred as a data plane) from a routing, resource, and other management functionality (sometimes referred as a control plane). As a result, while traditional network nodes may provide both the data plane functionality and the control plane functionality, an SDN node (e.g., a switch) may provide the data plane functionality and a centralized SDN controller may provide the control plane functionality.
In an SDN architecture, the control plane functionality may be extracted from each individual switch to a centralized SDN controller, which may be remotely coupled to a plurality of switches in the SDN. On one hand, the SDN controller may build a flow table (sometimes referred to interchangeably as a flow entry table or flow forwarding table), which comprises a plurality of flow entries. Each flow entry comprises matching fields that classify a traffic flow and an action that should be executed on the traffic flow. On the other hand, each switch may keep a cached copy of some or all flow entries of the flow table. A switch may forward incoming packets based on the flow entries in its cache.
Sometimes, no flow entry can be found in a cache of a switch, which may be called a table-miss or cache-miss. In this case, the switch may either drop the packet or send the packet to the SDN controller for a forwarding decision. Since in SDN architecture, the control plane and the data plane are put into different devices and they communicate via a network, potential delay may be introduced into routing a packet, e.g., in case an entry-miss is not as trivial as that in a non-SDN model. Packet delay may be a problem for certain application packets (e.g., voice packets) that are latency sensitive. Therefore, it is desirable to improve packet switching to minimize or reduce packet delay.